package com.hh.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hh.entity.domain.Message;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author hanhui
 * @description 针对表【notification(通知表)】的数据库操作Service
 * @createDate 2025-07-26 10:35:55
 */
public interface MessageService extends IService<Message> {

    /**
     * 向指定用户发送消息
     *
     * @param message 消息对象，包含消息内容和接收者信息
     */
    void sendMessageToUser(Message message);

    /**
     * 发送系统消息
     *
     * @param content 系统消息对象，包含系统通知内容
     */
    void sendSystemMessage(String content);

    /**
     * 获取用户的所有消息
     *
     * @param userId 用户ID
     * @return 用户的消息列表
     */
    List<Message> getUserMessages(String userId);

    /**
     * 将指定消息标记为已读
     *
     * @param messageId 消息ID
     */
    int  markAsRead(Long messageId);

    /**
     * 获取用户的未读消息数量
     *
     * @param userId 用户ID
     * @return 未读消息数量
     */
    long getUnreadCount(String userId);

    /**
     * 保存离线消息
     *
     * @param userId  用户ID
     * @param message 离线消息内容
     */
    void saveOfflineMessage(String userId, Object message);

    int readAll(HttpServletRequest request);
}
